# 代码编写者： 李朔
# 开发时间： 2021/7/22 17:29
S = "ababcbacadefegdehijhklij"
def partitionLabels(S):
    #出现的元素
    s_list=[]
    for i in S:
        if i not in s_list:
            s_list.append(i)
    #元素的分布情况
    s_info=[]
    res=[]
    for i in s_list:
        s_info.append([S.find(i),len(S)-S[::-1].find(i)-1])
    start,end,i=s_info[0][0],s_info[0][1],1
    while i<len(s_info):
        #先判断有没有交集:
        if end>=s_info[i][0]:  #两部分有交集,等号取不到
            if end<s_info[i][1]:   #不是包含关系，但是有交集
                end=s_info[i][1]
            else:   #包含关系
                pass
        else:   #两个区间之间相互独立（当前工作区间，待处理区间）
            res.append(end-start+1)
            start=s_info[i][0]
            end=s_info[i][1]
        i+=1
    res.append(end-start+1)
    return res
print(partitionLabels(S))
